Benjamin Otte [Tue, 29 Sep 2015 21:19:07 +0000 (23:19 +0200)]
widget: Make gtk_widget_queue_allocate() not resize
This commit toggles the big switch. We now don't run size_allocate()
from the toplevel up anymore in cases where we don't need to.
Things might be broken in subtle ways as a result of this commit. We'll
have to find them and fix them.
Benjamin Otte [Tue, 29 Sep 2015 19:04:07 +0000 (21:04 +0200)]
widget: Track if a child needs an allocation
This is not used so far.
Benjamin Otte [Mon, 28 Sep 2015 19:57:25 +0000 (21:57 +0200)]
widget: Refactor function
Turn it from a loop into tail-calling itself.
Benjamin Otte [Mon, 28 Sep 2015 19:54:23 +0000 (21:54 +0200)]
widget: Move resize function into gtkwidget.c
There's no sizegroup specific code left in it, but lots of
widget-specifics.
Benjamin Otte [Mon, 28 Sep 2015 19:17:21 +0000 (21:17 +0200)]
sizegroup: Merge function into only caller
Benjamin Otte [Mon, 28 Sep 2015 19:08:57 +0000 (21:08 +0200)]
sizegroup: Simplify widget's size group invalidation
Since we do not queue resizes twice anymore, we can just walk the list
of groups without deduplication.
Benjamin Otte [Mon, 28 Sep 2015 03:48:57 +0000 (05:48 +0200)]
sizegroup: Skip resizes on widgets that have resize queued
Widgets that already have a resize queued don't need to walk the whole
parent chain and queue another resize. It's enough to do it once per
resize.
This also means that sizegroups cannot use the shortcut of just
invalidating the first widget in the group anymore. That widget might
already have a resize queued while others don't.
Benjamin Otte [Mon, 28 Sep 2015 03:42:04 +0000 (05:42 +0200)]
widget: Warn on calls to queue_resize() during size_allocate()
This happens way too much, so it's disabled unless GTK_DEBUG=geometry is
on.
Also, we can't detect it in the call to queue_resize() yet, only during
size_allocate(), so the warning comes after the signal emission.
Benjamin Otte [Mon, 28 Sep 2015 03:23:32 +0000 (05:23 +0200)]
widget: Clear pending resizes after size_allocate()
This catches the cases where widgets call gtk_widget_queue_resize()
in their size_allocate() callback.
Benjamin Otte [Mon, 28 Sep 2015 03:21:06 +0000 (05:21 +0200)]
widget: Warn if size-unqueried widgets get allocated
Widgets should have gtk_widget_get_preferred_width/height() called
on them before gtk_widget_size_allocate() gets called.
Add a check for this.
Benjamin Otte [Mon, 28 Sep 2015 00:19:25 +0000 (02:19 +0200)]
widget: Add a resize_needed flag
... and API to set and unset it.
It is set when gtk_widget_queue_resize() is called.
It is unset when gtk_widget_get_preferred_width/height() is called.
So far it is not used.
Benjamin Otte [Sun, 27 Sep 2015 10:29:05 +0000 (12:29 +0200)]
widget: Add a function that does actual resize
It's just shuffling code around.
Benjamin Otte [Fri, 18 Sep 2015 02:04:21 +0000 (04:04 +0200)]
sizegroup: Merge function into only caller
Both functions were running the same loop. Just running the loop once
seems advantageous.
Benjamin Otte [Wed, 16 Sep 2015 20:56:56 +0000 (22:56 +0200)]
sizegroup: Don't invalidate over resize containers.
Before this commit, a widget tree like this:
Window
AnyContainer (part of SizeGroup1)
GtkClutterEmbed
SomeWidget
when calling gtk_widget_queue_resize(SomeWidget), would invalidate
SizeGroup1, when it should have stopped at the GtkClutterEmbed (which is
a RESIZE_IMMEDIATE child).
Benjamin Otte [Fri, 18 Sep 2015 01:49:09 +0000 (03:49 +0200)]
sizegroup: Refactor function
Get rid of continues in loop. This allows doing more complex things in
future commits.
Benjamin Otte [Fri, 18 Sep 2015 01:41:12 +0000 (03:41 +0200)]
sizegroup: Refactor function
Benjamin Otte [Tue, 15 Sep 2015 20:11:35 +0000 (22:11 +0200)]
sizegroup: Remove special case before loop
The loop actually does the right thing already. There's no need to
complicate things.
Benjamin Otte [Tue, 15 Sep 2015 20:10:26 +0000 (22:10 +0200)]
sizegroup: refactor
The code looks a lot less dangerous if it doesn't look like we're
casting a random widget to a container.
Benjamin Otte [Tue, 15 Sep 2015 20:08:55 +0000 (22:08 +0200)]
sizegroup: Fold function into only caller
Benjamin Otte [Tue, 15 Sep 2015 19:57:49 +0000 (21:57 +0200)]
sizegroup: Move container function into its only caller
Benjamin Otte [Wed, 16 Sep 2015 21:16:44 +0000 (23:16 +0200)]
widget: Use gtk_widget_queue_allocate() when clip changes
There's no need to queue a full resize there.
Benjamin Otte [Mon, 14 Sep 2015 15:56:05 +0000 (17:56 +0200)]
API: widget: Add gtk_widget_queue_allocate()
This is so widgets can queue a rerun of their allocation logic, but
without triggering resizes everywhere.
For now, it just calls gtk_widget_queue_resize().
Benjamin Otte [Mon, 28 Sep 2015 21:33:28 +0000 (23:33 +0200)]
container: Use correct allocation for calling size_allocate()
Benjamin Otte [Mon, 14 Sep 2015 04:11:36 +0000 (06:11 +0200)]
API: widget: Add gtk_widget_get_allocated_size()
See docs for what this is.
Benjamin Otte [Tue, 24 Mar 2015 03:45:38 +0000 (04:45 +0100)]
sizegroup: Remove GtkQueueResizeFlags
They were only used with geometry widgets.
Benjamin Otte [Tue, 24 Mar 2015 03:37:26 +0000 (04:37 +0100)]
widget: Remove _gtk_widget_override_size_request()
The function was only used by the geometry widget.
Benjamin Otte [Tue, 24 Mar 2015 03:33:45 +0000 (04:33 +0100)]
window: Ignore geometry widget
Ignore the geometry widget passed to gtk_window_set_geometry_hints().
Usind the widget itself was a hack that complicates the size request
machinery.
It is also incorrect in that it doesn't respect height-for-width.
Last but not least, it was only used by gnome-terminal and that
application can easily work without it.
Benjamin Otte [Mon, 28 Sep 2015 21:31:04 +0000 (23:31 +0200)]
container: Don't randomly call gtk_widget_set_allocation()
gtk_widget_size_allocate() does that already.
Benjamin Otte [Mon, 21 Sep 2015 16:35:16 +0000 (18:35 +0200)]
entry: Always render like with is_cellrenderer
And remove the API to set that variable.
If you want the entry to not fill its whole allocated area,
gtk_widget_set_valign (entry, GTK_ALIGN_FILL);
will give you the old behavior.
Benjamin Otte [Fri, 9 Oct 2015 13:41:00 +0000 (15:41 +0200)]
icontheme: Clarify GENERIC_FALLBACK flag handling
- Add docs explaining that it doesn't work everywhere
- g_warn_if_fail() in the APIs where it doesn't work
Benjamin Otte [Fri, 9 Oct 2015 13:42:58 +0000 (15:42 +0200)]
iconhelper: Don't pass GENERIC_FALLBACK flag
It's not used when looking up with a GIcon.
Benjamin Otte [Wed, 28 Oct 2015 18:35:23 +0000 (19:35 +0100)]
cssprovider: Have a section when parsing style properties
Signal handlers expect a section to be present, so provide them with
one.
New testcase included.
https://bugzilla.gnome.org/show_bug.cgi?id=757240
Matthias Clasen [Wed, 28 Oct 2015 15:49:00 +0000 (11:49 -0400)]
Revert "tooltip: Use an element name"
This reverts commit
efc8dc63e30d9d53df3cf336673f751fab437d2c.
This change broke tooltip positioning in a way that I don't
fully understand, so take it back for now.
Matthias Clasen [Wed, 28 Oct 2015 15:53:09 +0000 (11:53 -0400)]
Revert "HighContrast: Update tooltip styling"
This reverts commit
93d80380ee93f2d7f7005675900e4da0fbef982c.
Matthias Clasen [Wed, 28 Oct 2015 15:48:52 +0000 (11:48 -0400)]
Revert "Adwaita: Update tooltip theming"
This reverts commit
d974610741349b3f4e4c06abd87c82d99c6858ba.
Matthias Clasen [Wed, 28 Oct 2015 14:07:18 +0000 (10:07 -0400)]
Fix key themes for GtkEntry -> entry
This was pointed out in
https://bugzilla.gnome.org/show_bug.cgi?id=757252
Matthias Clasen [Wed, 28 Oct 2015 14:14:54 +0000 (10:14 -0400)]
shortcuts: Redo the stack switcher theming
Use style classes on the button instead of the stack switcher,
this makes it easier to reuse elsewhere.
Matthias Clasen [Wed, 28 Oct 2015 11:10:30 +0000 (07:10 -0400)]
shortcuts label: Redo the keycap theming
Use a style class directly on the frame. This is easier to reuse.
Matthias Clasen [Wed, 28 Oct 2015 11:09:28 +0000 (07:09 -0400)]
Adwaita: Update shortcuts window theming
Use the newly added element name.
Matthias Clasen [Wed, 28 Oct 2015 10:50:00 +0000 (06:50 -0400)]
shortcuts: Use predefined style classes
Lets use the defines we have.
Matthias Clasen [Wed, 28 Oct 2015 10:45:37 +0000 (06:45 -0400)]
HighContrast: Update calendar theming
Use the newly introduced element name instead of hardcoding the type.
Matthias Clasen [Wed, 28 Oct 2015 10:44:34 +0000 (06:44 -0400)]
Adwaita: Update calendar theming
Use the newly introduced element name instead of hardcoding the type.
Matthias Clasen [Wed, 28 Oct 2015 10:35:33 +0000 (06:35 -0400)]
calendar: Add an element name
This will allow us to drop hardcoded type names in the theme.
Olivier Fourdan [Tue, 27 Oct 2015 17:05:39 +0000 (18:05 +0100)]
wayland: configure clients that resize themselves
Make sure the wayland backend sets a new geometry when the client
resizes itself, otherwise the compositor won't be notified and may
revert to the old size on state changes.
Thanks to Jasper St. Pierre <jstpierre@mecheye.net> who pointed out the
problem in gtk+.
bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=755051
Matthias Clasen [Wed, 28 Oct 2015 04:41:13 +0000 (00:41 -0400)]
inspector: Cosmetic changes to the hierarchy tab
Put the interfaces below GInterface.
Matthias Clasen [Wed, 28 Oct 2015 04:33:14 +0000 (00:33 -0400)]
inspector: Add css node style properties
Add a per-cssnode view of style properties.
Matthias Clasen [Wed, 28 Oct 2015 00:11:00 +0000 (20:11 -0400)]
Drop some no-longer existing headers
Matthias Clasen [Tue, 27 Oct 2015 00:49:28 +0000 (20:49 -0400)]
3.19.1
Matthias Clasen [Tue, 27 Oct 2015 22:56:05 +0000 (18:56 -0400)]
Fix reftests
Multiple reftests were damaged by the element name transition.
Repair them. The region reftests are no longer needed, since
we no longer do regions.
Matthias Clasen [Tue, 27 Oct 2015 19:14:34 +0000 (15:14 -0400)]
HighContrast: Update tooltip styling
Use the newly added element name instead of hardcoding the type.
Matthias Clasen [Tue, 27 Oct 2015 19:12:47 +0000 (15:12 -0400)]
Adwaita: Update tooltip theming
Use the newly introduced element name instead of hardcoding the type.
Matthias Clasen [Tue, 27 Oct 2015 19:10:39 +0000 (15:10 -0400)]
tooltip: Use an element name
This will allow us to drop hardcoded type names in the theme.
William Hua [Tue, 27 Oct 2015 20:19:42 +0000 (16:19 -0400)]
mir: emulate pointer for all touch events
Benjamin Otte [Tue, 27 Oct 2015 19:11:08 +0000 (20:11 +0100)]
cssselector: Print name and any selector first
When printing a "compound selector", make sure the name and universal
selectors are printed at the beginning and class, id, etc. selectors are
printed last.
Matthias Clasen [Tue, 27 Oct 2015 18:37:04 +0000 (14:37 -0400)]
Adwaita: Update GtkAssistant theming
Use the new element name, instead of hardcoding the type.
Matthias Clasen [Tue, 27 Oct 2015 18:31:32 +0000 (14:31 -0400)]
assistant: Use an element name
This will allow us to drop hardcoded type names in the theme.
Matthias Clasen [Tue, 27 Oct 2015 17:26:50 +0000 (13:26 -0400)]
Fix make check
Don't try setting GtkShortcutsShortcut::accelerator to a
random value, it only accepts strings that it can parse.
Matthias Clasen [Tue, 27 Oct 2015 16:53:43 +0000 (12:53 -0400)]
toolitemgroup: Fix the previous change
dispose can be called more than once.
Matthias Clasen [Tue, 27 Oct 2015 15:07:53 +0000 (11:07 -0400)]
tool item group: Don't leak a button
This causes a hickup in the new css node machinery, causing
the default-value test to fail.
Matthias Clasen [Tue, 27 Oct 2015 15:05:00 +0000 (11:05 -0400)]
icon theme: Ensure to propagate an error
If the svg pixbuf loader is not available, we end up with criticals
from gtk_css_image_icon_theme_draw because gtk_icon_info_load_symbolic
returns NULL without setting an error.
Avoid this by propagating the load error.
William Hua [Tue, 27 Oct 2015 14:50:18 +0000 (10:50 -0400)]
mir: warning clean-up
William Hua [Tue, 27 Oct 2015 14:09:34 +0000 (10:09 -0400)]
mir: allow logging touch events
Matthias Clasen [Tue, 27 Oct 2015 12:48:08 +0000 (08:48 -0400)]
shortcuts: Some property hygiene
Bring property notification for some of the new shortcuts widgets
up to the standards of our testsuite.
Lars Uebernickel [Tue, 27 Oct 2015 12:38:14 +0000 (13:38 +0100)]
gdkpixbuf-drawable: reinstate accidentally removed line
Lars Uebernickel [Mon, 26 Oct 2015 09:12:34 +0000 (10:12 +0100)]
gdk_pixbuf_get_from_window: honor device scale
gdk_pixbuf_get_from_window() paints the given window onto a new cairo
surface. Create that new surface with the same device scale as the
window so that the result is not scaled down on hidpi screens.
https://bugzilla.gnome.org/show_bug.cgi?id=757147
Marek Černocký [Tue, 27 Oct 2015 06:38:21 +0000 (07:38 +0100)]
Updated Czech translation
Matthias Clasen [Tue, 27 Oct 2015 03:37:13 +0000 (23:37 -0400)]
inspector: Allow editing css node properties
This reuses the property editor infrastructure from the
property list pages. Good that css nodes are objects.
Matthias Clasen [Tue, 27 Oct 2015 03:38:05 +0000 (23:38 -0400)]
inspector: Support editing interned string properties
Sadly, interned string properties cannot be handled generically
at all - GObject insists on inserting a strcpy in any attempt
to set a string property with generic api, destroying the
internedness of the string.
Therefore, we have to special-case GtkCssNode in the property
editor code :-(
Matthias Clasen [Tue, 27 Oct 2015 03:35:22 +0000 (23:35 -0400)]
Add some api annotations
Nothing is using the /*interned*/ annotations currently,
but if we are doing this, we should be consistent.
Benjamin Otte [Tue, 27 Oct 2015 02:11:56 +0000 (03:11 +0100)]
widget: Add name to widget paths
This changes widget paths for widgets with a CSS name to return that CSS
name, now that we have added API for it.
This means that style properties are now matches using the CSS name.
Also fix the theme to use the correct name when matching style properties.
Benjamin Otte [Tue, 27 Oct 2015 02:11:21 +0000 (03:11 +0100)]
cssmatcher: Actually match names for widget paths
The type is always 0 when we use names. So this would always return
FALSE. Oops.
Matthias Clasen [Tue, 27 Oct 2015 02:08:03 +0000 (22:08 -0400)]
entry: properly update css subnode state
Update the state of the css subnodes for icons when
appropriate, and avoid calling set_state after save_to_node.
Matthias Clasen [Tue, 27 Oct 2015 01:32:26 +0000 (21:32 -0400)]
entry: Use better element name for progress
Change the name of the CSS subnode for progress rendering from
progressbar to progress. This will align better with GtkProgressBar.
Robert Ancell [Thu, 22 Oct 2015 03:45:48 +0000 (16:45 +1300)]
gdk: Deprecate gdk_display_get_screen
Jonas Ådahl [Tue, 27 Oct 2015 01:00:48 +0000 (09:00 +0800)]
wayland: Don't use GTK symbols from GDK
GTK_WINDOW_POPUP sets the GdkWindow type to GDK_WINDOW_TEMP, so use
that in GDK, not the GTK symbol which doesn't exist there.
Benjamin Otte [Tue, 27 Oct 2015 00:26:20 +0000 (01:26 +0100)]
API: Add gtk_widget_path_iter_set_object_name()
... and gtk_widget_path_iter_get_object_name(). This allows applications
that still use widget paths to use the new object names to get the
correct styling.
Mutter and webkit-gtk are examples here.
Jonas Ådahl [Sun, 18 Oct 2015 13:23:12 +0000 (21:23 +0800)]
GtkTreeView: Rework the search window hack so it also works on Wayland
The search window of a tree view was implemented by showing without
making it visible by by positioning it outside the screen edge. This is
not possible on Wayland, so implement another method for being able to
enter text into a non-visible entry.
The new method is implemented by, before showing the window, pass the
key event directly to the IM context backing the entry. If the key
event triggered the context to commit new text or change the preedit
content, the search window is shown, and from that point the key events
are forwarded directly to the entry widget.
https://bugzilla.gnome.org/show_bug.cgi?id=756780
Jonas Ådahl [Sun, 18 Oct 2015 13:21:51 +0000 (21:21 +0800)]
wayland: Map UTILITY hinted popup windows as subsurfaces
Currently used by GtkTreeView to map windows without changing focus. We
can't map this as a popup, because popup implies focus change.
https://bugzilla.gnome.org/show_bug.cgi?id=756780
Jonas Ådahl [Sun, 18 Oct 2015 13:12:59 +0000 (21:12 +0800)]
GtkTreeView: Make a search window destroy helper
https://bugzilla.gnome.org/show_bug.cgi?id=756780
Jonas Ådahl [Sun, 18 Oct 2015 13:03:52 +0000 (21:03 +0800)]
wayland: Don't try to use subsurfaces as popup parents
If a GtkMenu (or something else that is mapped as a xdg_popup) tries to
use a subsurface window as a parent, it will be terminated by the
compositor due to protocol violation. So to avoid this, if a parent
window is not a xdg_popup or xdg_surface, i.e. a wl_subsurface, then
traverse up the transient parents until we find the right popup parent.
https://bugzilla.gnome.org/show_bug.cgi?id=756780
Jonas Ådahl [Sun, 18 Oct 2015 12:23:07 +0000 (20:23 +0800)]
wayland: Make window type conditions switches
In order to make it easier to add/remove in future commits.
https://bugzilla.gnome.org/show_bug.cgi?id=756780
Jonas Ådahl [Sat, 17 Oct 2015 11:25:52 +0000 (19:25 +0800)]
GtkTreeView: Use more consistent search window naming
Instead of alternating between search dialog and search window, use
search window everywhere.
https://bugzilla.gnome.org/show_bug.cgi?id=756780
Matthias Clasen [Mon, 26 Oct 2015 20:51:28 +0000 (16:51 -0400)]
entry: Bring back icon padding
Not sure why this is necessary now, but it is.
Matthias Clasen [Mon, 26 Oct 2015 19:28:50 +0000 (15:28 -0400)]
entry: Only set one of the .left, .right style classes
We were not removing the old style class when adding a new one.
Matthias Clasen [Mon, 26 Oct 2015 13:16:38 +0000 (09:16 -0400)]
testassistant: Add another example
This adds a test involving removing and re-adding pages, to
help with
https://bugzilla.gnome.org/show_bug.cgi?id=756385
Matthias Clasen [Mon, 26 Oct 2015 13:01:07 +0000 (09:01 -0400)]
assistant: Handle page-type and title changes properly
We need to update our state when a pages' type or title changes.
Matthias Clasen [Mon, 26 Oct 2015 11:22:28 +0000 (07:22 -0400)]
shortcuts: Cosmetic change
The .flat style class is controlled by the relief property,
so just use that instead of manually setting style classes.
Matthias Clasen [Sun, 25 Oct 2015 22:53:56 +0000 (18:53 -0400)]
label docs: Mention common style classes
Mention some of the style classes that are commonly used
with labels.
Olivier Fourdan [Thu, 22 Oct 2015 12:19:15 +0000 (14:19 +0200)]
GtkWindow: fix move/get position with CSD
Take into account and compensate for the size of the client side
decorations widgets in gtk_window_move() and gtk_window_get_pos()
including gravity.
Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=756618
Olivier Fourdan [Thu, 15 Oct 2015 09:25:51 +0000 (11:25 +0200)]
GtkWindow: add up CSD size in gtk_window_resize()
When client side decoration is used, the size passed to
gtk_window_resize() or retrieved from gtk_window_get_size() for top-
level windows also accounts for the client side decorations widgets
such as the title bar or the shadow borders.
Add up the size of these additional controls to the given size to get
the size expected.
Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=756618
Marek Černocký [Mon, 26 Oct 2015 06:56:07 +0000 (07:56 +0100)]
Updated Czech translation
Matthias Clasen [Sun, 25 Oct 2015 21:19:34 +0000 (17:19 -0400)]
HighContrast: Don't use GtkInfoBar type name
We have a proper element name for it now.
Matthias Clasen [Sun, 25 Oct 2015 21:19:01 +0000 (17:19 -0400)]
Adwaita: Don't use GtkInfoBar type name
We have a proper element name for it now.
Matthias Clasen [Sun, 25 Oct 2015 21:18:20 +0000 (17:18 -0400)]
infobar: Add a name to the css node
This lets us avoid the type name in css.
Matthias Clasen [Sun, 25 Oct 2015 20:29:11 +0000 (16:29 -0400)]
HighContrast: Update separator rendering
Adapt HighContrast t othe changes in the pre-previous commit.
Matthias Clasen [Sun, 25 Oct 2015 20:28:38 +0000 (16:28 -0400)]
Adwaita: Update separator styling
Adapt Adwaita to the changes in the previous commit.
Matthias Clasen [Sun, 25 Oct 2015 20:27:44 +0000 (16:27 -0400)]
separator: Use the element name separator
Switch GtkSeparator from using the .separator style class to
using the element name separator for its css node.
Matthias Clasen [Sun, 25 Oct 2015 19:43:41 +0000 (15:43 -0400)]
Adwaita: Update accel label styling
Adapt Adwaita to the changes in the previous commit.
Matthias Clasen [Sun, 25 Oct 2015 19:42:40 +0000 (15:42 -0400)]
accel label: Use a css node for the accelerator
Use a permanent subnode with name accelerator instead of the
.accelerator style class.
Matthias Clasen [Sun, 25 Oct 2015 19:21:52 +0000 (15:21 -0400)]
HighContrast: Update spinner rendering
Adapt HighContrast to the changes in the pre-previous commit.